package com.rbac.mapper;

import com.rbac.entity.SysRole;
import com.rbac.vo.RoleVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface RoleMapper {
	/**
	 * 根据角色编码查询角色
	 */
	SysRole selectByRoleCode(String roleCode);
	
	/**
	 * 根据ID查询角色
	 */
	SysRole selectById(Long id);
	
	/**
	 * 查询角色列表
	 */
	List<RoleVO> selectRoleList(com.rbac.dto.RoleQueryDTO queryDTO);
	
	/**
	 * 新增角色
	 */
	int insert(SysRole role);
	
	/**
	 * 更新角色
	 */
	int update(SysRole role);
	
	/**
	 * 删除角色
	 */
	int deleteById(Long id);
	
	/**
	 * 根据角色ID查询权限名称列表
	 */
	List<String> selectPermissionNamesByRoleId(Long roleId);
	
	/**
	 * 根据角色ID查询权限ID列表
	 */
	List<Long> selectPermissionIdsByRoleId(Long roleId);
	
	/**
	 * 删除角色的全部权限关联
	 */
	int deleteRolePermissionsByRoleId(Long roleId);
	
	/**
	 * 批量插入角色权限关联
	 */
	int insertRolePermissions(@Param("roleId") Long roleId, @Param("permissionIds") List<Long> permissionIds);

	/**
	 * 统计角色总数
	 */
	long countAll();
} 